Skip to content

fix: update Tabs API for Docusaurus 3.10.0 compatibility#1398

Merged
sserrata merged 2 commits intomainfrom
fix/docusaurus-3.10-tabs-compatibility
Apr 8, 2026
Merged

fix: update Tabs API for Docusaurus 3.10.0 compatibility#1398
sserrata merged 2 commits intomainfrom
fix/docusaurus-3.10-tabs-compatibility

Conversation

@sserrata
Copy link
Copy Markdown
Member

@sserrata sserrata commented Apr 8, 2026

Summary

  • Adapts all 6 custom tab components (ApiTabs, SchemaTabs, MimeTabs, OperationTabs, DiscriminatorTabs, CodeTabs) to the new Tabs context API introduced in Docusaurus 3.10.0 (facebook/docusaurus#11733)
  • Replaces useTabs(props) with useTabsContextValue(props) + <TabsProvider> wrapper
  • Removes cloneElement hidden prop injection — TabItem now self-manages visibility via context
  • Consolidates imports to @docusaurus/theme-common/internal (deep lib/ paths are restricted by the package exports field in 3.10.0)
  • Updates ambient type declarations in theme-classic.d.ts
  • Bumps Docusaurus peerDeps/devDeps from ^3.5.0 to ^3.10.0

Breaking Change

This is a breaking change — the minimum supported Docusaurus version is now 3.10.0. Users on 3.9.x and below must upgrade Docusaurus before updating this package.

Test plan

  • docusaurus-plugin-openapi-docs builds successfully
  • docusaurus-theme-openapi-docs builds successfully
  • Demo site builds successfully with Docusaurus 3.10.0
  • Manual verification of tab switching behavior on the demo site

Closes #1395

🤖 Generated with Claude Code

Docusaurus 3.10.0 refactored the internal Tabs system to use React
context (facebook/docusaurus#11733), breaking all custom tab components.

- Replace useTabs(props) with useTabsContextValue(props) + TabsProvider
- Remove cloneElement hidden prop injection (TabItem self-manages via context)
- Consolidate imports to @docusaurus/theme-common/internal (deep lib/ paths
  are now restricted by the package exports field)
- Update ambient type declarations in theme-classic.d.ts
- Bump Docusaurus peerDeps/devDeps to ^3.10.0

Closes #1395

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 8, 2026

Visit the preview URL for this PR (updated for commit e26e287):

https://docusaurus-openapi-36b86--pr1398-sugo4t7o.web.app

(expires Wed, 15 Apr 2026 02:38:27 GMT)

🔥 via Firebase Hosting GitHub Action 🌎

Sign: bf293780ee827f578864d92193b8c2866acd459f

With TabItem now self-managing visibility via context, the
cloneElement call that only injected key was dead weight. Render
children directly instead.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@sserrata sserrata merged commit 267f100 into main Apr 8, 2026
10 of 11 checks passed
@sserrata sserrata deleted the fix/docusaurus-3.10-tabs-compatibility branch April 8, 2026 02:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Incompatibility with Docusaurus 3.10.0: useTabs() must be used within a Tabs component

1 participant